package vue.panneau2.controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import vue.panneau2.Zone2;
import vue.panneau2.modele.ModelePanneau2;
import vue.panneau2.modele.exception.IndiceIncorrectException;

public class ControleActionPanneau2 implements ActionListener {
	private ModelePanneau2 modelePanneau2;
	private Zone2 z2;
	private List<NouveauResultatPointListener> listeners;
	
	public ControleActionPanneau2(Zone2 z2, ModelePanneau2 modelePanneau2,List<NouveauResultatPointListener> listeners) {
		this.z2 = z2;
		this.modelePanneau2 = modelePanneau2;
		this.listeners = listeners ;
	}
	
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equalsIgnoreCase("lancer la résolution")) {
			modelePanneau2.getProblemeLineaire().resoudre();
			z2.setLNumEtapeCourante("Etape 0/" + modelePanneau2.getProblemeLineaire().getnombreDeMatrices());
			z2.repaint();
		}
		else
		if (e.getActionCommand().equalsIgnoreCase("<<")) {
			modelePanneau2.setNumEtapeCourant(-1);
			z2.setLNumEtapeCourante("Etape 0/" + modelePanneau2.getProblemeLineaire().getnombreDeMatrices());
			z2.getModele().changePointActif();
			z2.repaint();
		}
		else
		if (e.getActionCommand().equalsIgnoreCase("<")) {
			if (modelePanneau2.getNumEtapeCourant() >= 0) {
				modelePanneau2.setNumEtapeCourant(modelePanneau2.getNumEtapeCourant() - 1);
				z2.setLNumEtapeCourante("Etape " + (modelePanneau2.getNumEtapeCourant() + 1) + "/" + modelePanneau2.getProblemeLineaire().getnombreDeMatrices());
				z2.getModele().changePointActif();
				z2.repaint();
			}
		}
		else
		if (e.getActionCommand().equalsIgnoreCase(">")) {
			if (modelePanneau2.getNumEtapeCourant() < (modelePanneau2.getProblemeLineaire().getnombreDeMatrices() - 1)) {
				modelePanneau2.setNumEtapeCourant(modelePanneau2.getNumEtapeCourant() + 1);
				z2.setLNumEtapeCourante("Etape " + (modelePanneau2.getNumEtapeCourant() + 1)  + "/" + modelePanneau2.getProblemeLineaire().getnombreDeMatrices());
				z2.getModele().changePointActif();
				z2.repaint();
			}
		}
		else
		if (e.getActionCommand().equalsIgnoreCase(">>")) {
			modelePanneau2.setNumEtapeCourant(modelePanneau2.getProblemeLineaire().getnombreDeMatrices() - 1);
			z2.setLNumEtapeCourante("Etape " + modelePanneau2.getProblemeLineaire().getnombreDeMatrices() + "/" + modelePanneau2.getProblemeLineaire().getnombreDeMatrices());
			z2.getModele().changePointActif();
			z2.repaint();
		}
	}
}
